package test.stack;

import java.util.Stack;
import java.util.function.Consumer;

public class StackExample {
    public static void main(String[] args) {
        // 创建一个栈实例
        Stack<Integer> stack = new Stack<>();

        System.out.println("栈内元素（是否为空）: " + stack.isEmpty()); // 输出:

        // 向栈中添加元素
        stack.push(1);
        stack.push(2);
        stack.push(3);

        System.out.println("栈内元素（是否为空）: " + stack.isEmpty()); // 输出:

        System.out.println("栈内元素（总数）: " + stack.size()); // 输出:3

        System.out.println("栈内元素（取栈顶get）: " + stack.get(stack.size() - 1)); // 输出:3
        System.out.println("栈内元素（取栈顶lastElement）: " + stack.lastElement()); // 输出:3
        System.out.println("栈内元素（取栈顶peek）: " + stack.peek()); // 输出:3

        System.out.println("栈内元素（取栈底）: " + stack.get(0)); // 输出:1

//        stack.forEach(integer -> {
//            System.out.println("栈内元素（便利）: " + integer); // 输出: 1、2、3
//            if (integer == 1){
//                stack.remove(integer);
//            }
//        });

        stack.forEach(integer -> {
            System.out.println("栈内元素（遍历）: " + integer); // 输出: 1、2、3
        });

        // 查看栈顶元素但不移除
        System.out.println("栈顶元素（未移除）: " + stack.peek()); // 输出: 3

        // 移除并返回栈顶元素
        System.out.println("移除并返回栈顶元素: " + stack.pop()); // 输出: 3

        // 再次查看栈顶元素（此时为2）
        if (!stack.isEmpty()) { // 检查栈是否为空，避免调用peek()时抛出异常
            System.out.println("新的栈顶元素（未移除）: " + stack.peek()); // 输出: 2
        }
    }
}
